<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>块级作用域</title>
  </head>
  <body>
    <script>
      // ES6推出的新增作用域, 搭配 let /const + {} 一起用
      {
        let a = 4
        console.log(a)
      }

      // var 没有块级作用域
      {
        var a = 4
        console.log(a)
      }

      // 哪些{} 能形成块级作用域
      if (true) {
        let a = 'e333'
        console.log(a)
      }
      // for, switch, while

      // 不能形成块级作用域
      // 函数的{}: 函数作用域
      function abb() {
        let a = 44
        console.log(a)
      }
      abb()

      // 经常被误解: 对象的{}
      // 对象类型中, 没有书写 let/const 的语法
      // var cc = { a: 44, b: 99, let c= 44 }

      // 没写到{}里:   脚本作用域
      let cc = 44

      // 4种作用域: 全局 脚本 块级 函数
    </script>
  </body>
</html>
